import { defineStore } from "pinia";
const useUserStore = defineStore("tagsView", {
  // options
  state: () => ({
    tags: [],
    cacheTags: [],
  }),
  //   方法：同步和异步
  actions: {
    //初始化数据 - 获取固定值的路由信息替换到这里去
    initTags(tags) {
      //初始获取数据成员判断操作
      this.tags = tags;
    },

    //增删改查
    addTag(item) {
      console.log(item);
      const { path } = item;
      const flag = this.tags.map((item) => item.path).includes(path);
      if (flag) return;
      this.tags.push(item);
    },

    // 删
    remove(index) {
      // 删除state中的某个成员
      this.tags.splice(index, 1);
    },

    // 删除其他
    removeOther(index) {
      if (isNaN(index)) return;
      //删除数组： 方案1正向删除记得回退操做
      //方案2：倒着删除
      //注意：this.tags.length不能存储到外面，因为每次循环之后数组长度发生变化
      for (let i = 0; i < this.tags.length; i++) {
        const item = this.tags[i];
        console.log(item);
        if (item.isAffix || index === i) {
          continue;
        }
        this.tags.splice(i, 1);
        i--;
      }
    },

    //删除所有
    removeAll() {
      //删除数组： 方案1正向删除记得回退操做
      //方案2：倒着删除
      for (let i = this.tags.length - 1; i >= 0; i--) {
        const item = this.tags[i];
        if (item.isAffix) {
          return;
        }
        this.tags.splice(i, 1);
      }
      //注意：this.tags.length不能存储到外面，因为每次循环之后数组长度发生变化
    },
  },
});

export default useUserStore;
